import java.util.ArrayList;
import java.util.List;

/**
 * 将一个给定字符串根据给定的行数，以从上往下、从左到右进行 Z 字形排列。
 *
 * 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时，排列如下：
 *
 * L   C   I   R
 * E T O E S I I G
 * E   D   H   N
 *
 */
public class Solution_06 {
    public String convert(String s, int numRows) {
        if (numRows < 2){
            return s;
        }
        List<StringBuilder> list = new ArrayList<StringBuilder>();
        //初始化
        for (int i=0;i<numRows;i++) {
            list.add(new StringBuilder());
        }
        int i=0,flag=-1;
        //遍历字符串循环放入集合中
        for (char c:s.toCharArray()) {
            if (i==0 || i==numRows-1) {flag=-flag;}
            list.get(i).append(c);
            i += flag;
        }
        StringBuilder result = new StringBuilder();
        for(StringBuilder row : list) {result.append(row);}
        return result.toString();
    }
}

